package com.yuexunit.finance.project.action.v1;

import java.math.BigDecimal;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.project.action.v1.model.BailReturnInfo;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/**
 * @author wenwenlong
 */
public interface BailReturnActionApi {
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还申请")
	public void createBailReturn(
			@Parameter(name = "financeId", description = "﻿融资ID") Long financeId,
			@Parameter(name = "amount", description = "﻿金额") BigDecimal amount
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询保证金退还信息列表")
	public PageList<BailReturnInfo> inquireBailReturnPageList(
			@Parameter(name = "financeNumber", description = "融资编号", nullable=true) String financeNumber,
//			@Parameter(name = "productType", description = "业务类型", nullable=true) Integer productType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询保证金退还信息详情")
	public BailReturnInfo inquireBailReturnDetail(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还审核-营运商务")
	public void auditBailReturnOperationBusiness(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId,
			@Parameter(name = "operationBusinessAudit", description = "营运商务审核") String operationBusinessAudit,
			@Parameter(name = "operationBusinessAuditState", description = "营运商务审核状态 1:同意/2:拒绝") Integer operationBusinessAuditState
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还审核-营运总监")
	public void auditBailReturnChiefOperation(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId,
			@Parameter(name = "chiefOperationAudit", description = "营运总监审核") String chiefOperationAudit,
			@Parameter(name = "chiefOperationAuditState", description = "营运总监审核状态 1:同意/2:拒绝") Integer chiefOperationAuditState
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还审核-财务审核")
	public void auditBailReturnFinancial(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId,
			@Parameter(name = "financialAudit", description = "财务审核") String financialAudit,
			@Parameter(name = "financialAuditState", description = "财务审核状态 1:同意/2:拒绝") Integer financialAuditState
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还审核-领导审核")
	public void auditBailReturnLeader(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId,
			@Parameter(name = "leaderAudit", description = "领导审核") String leaderAudit,
			@Parameter(name = "leaderAuditState", description = "领导审核状态 1:同意/2:拒绝") Integer leaderAuditState
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还审核-现金会计")
	public void auditBailReturnAccounting(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId,
			@Parameter(name = "accountingAudit", description = "现金会计审核") String accountingAudit,
			@Parameter(name = "accountingAuditState", description = "现金会计审核状态 1:同意/2:拒绝") Integer accountingAuditState
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "保证金退还审核-总裁审核")
	public void auditBailReturnCeo(
			@Parameter(name = "bailReturnInfoId", description = "保证金退还信息ID") Long bailReturnInfoId,
			@Parameter(name = "ceoAudit", description = "总裁审核") String ceoAudit,
			@Parameter(name = "ceoAuditState", description = "总裁审核状态 1:同意/2:拒绝") Integer ceoAuditState
	);
}
